﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using GDIT.Base;
using System.Configuration;
using GDIT.Base.PageBaseHelper;
using GDIT.BLL;
using System.Web.UI;


namespace GDIT
{
    public class Global : System.Web.HttpApplication
    {

        void Application_Start(object sender, EventArgs e)
        {

            // 在应用程序启动时运行的代码
            //在程序的入口点显式的为XpoDefault.DataLayer赋值
            //为XpoDefault指定了DataLayer以后，则后续的Session（UnitOfWork）都将共享的使用这个DataLayer
            string conn = ConfigurationManager.ConnectionStrings["DbConnString"].ConnectionString;
            //XpoDefault.Session = null;
            XpoDefault.DataLayer = XpoDefault.GetDataLayer(conn, AutoCreateOption.DatabaseAndSchema);
            XpoDefault.Session.ConnectionString = conn;
            //XpoDefault.Session.AutoCreateOption = AutoCreateOption.DatabaseAndSchema;
            //XpoDefault.Session.Connect();
            string userIP = PageBase.GetClientIP();

            //调用方法判断该IP是否已经进入过该网站，没有则增加点击数。
            BCounter count = new BCounter();
            count.AddCounter(userIP);

        }

        void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码

        }

        void Application_Error(object sender, EventArgs e)
        {
            // 在出现未处理的错误时运行的代码
            // 使用应用程序级异常处理时，请将下面代码的注释符号去掉即可

            //if (!System.Diagnostics.EventLog.SourceExists("ASPNETApplication"))
            //{
            //    System.Diagnostics.EventLog.CreateEventSource
            //       ("ASPNETApplication", "Application");
            //}
            //System.Diagnostics.EventLog.WriteEntry("ASPNETApplication", Server.GetLastError().Message);
            //Server.ClearError();  //清空前一个异常

        }

        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码

        }

        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时，才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer，则不会引发该事件。

        }

    }
}
